package Spil;

import boundaryToMatador.GUI;

public class TerningeSpil {
	private final int antalSpillere = 2;
	private String NySpiller;
	private int spillerNr;
	private boolean gameOn = true;
	private String Res = null;
	private int deltagerNr;
	
	public static void main(String[] args) {
		new TerningeSpil().start(); //Starter terningespil
	}
	
	public void start() {
		
		Raflebaeger rafle = new Raflebaeger(); 
		
		Spiller[] spillerListe = new Spiller[antalSpillere + 1]; //Spillertabllen oprettes
		
		GUI.showMessage("Dette terningespil er for " + antalSpillere + " spillere."); //Intro
		
		for (spillerNr = 1; spillerNr < antalSpillere + 1; spillerNr++) { //Gentagelse ved alle spillerne
			NySpiller = "Skriv navnet på spiller " + spillerNr + " her:"; //Tekst i spillet
			spillerListe[spillerNr] = new Spiller(GUI.getUserString(NySpiller)); //Tilføjelse af spiller objekt i spillertabellen
		}
		
		while (gameOn) //Runderne skal fortsætte indtil der er fundet en vinder
		{
			spillerNr = 1; //Start runde ved spiller 1

			do {
				GUI.getUserButtonPressed(spillerListe[spillerNr] + "'s tur. ", "Kast terningerne"); //Tekst i spillet

				rafle.kastTerning(); //Raflebæger kaster de to terninger

				if (rafle.taberSlag()) //Hvis to 1'ere
				{
					GUI.showMessage("Da du har slået to 1'ere, så mister du alle dine point!"); //Tekst i spillet
					spillerListe[spillerNr].nulstilPoint(); //Spiller mister sine point
				}
				else
				{
					spillerListe[spillerNr].tilfoejPoint(rafle.totalSum()); //Lægger terningeøjnene til pointene
					GUI.showMessage(spillerListe[spillerNr] + " har nu " + spillerListe[spillerNr].visPoint() + " point."); //Tekst i spillet
				}	

				if (spillerListe[spillerNr].visForrigePoint() >= 40 && rafle.toEns() == true) //Hvis spiller har 40+ i sine point før runden og slår to ens
				{
					spillerListe[spillerNr].vind(); //Spiller vinder
					gameOn = false; //Sidste runde
				}	

				if (rafle.toXto6ere() == true) //Hvis man slår to 6ere også slår to 6ere i træk
				{
					spillerListe[spillerNr].vind(); //Spiller vinder
					gameOn = false; //Sidste runde
				}	

				if (rafle.toEns() == true) //Hvis to ens, undtagen to 1'ere
					GUI.showMessage("Da du har slået to ens, så har du fået én ekstratur!"); //Tekst i spillet
				else
				{
					spillerNr++; //Næste spiller
					rafle.nulstilForrigeSum(); //Nulstiller hvad terningerne sidst slog
				}
			} while (spillerNr < antalSpillere + 1); //Slutter runde, når alle spillere har haft sin tur

			for (deltagerNr = 1; deltagerNr < antalSpillere + 1; deltagerNr++) //Gøres for alle spillere
			{
				spillerListe[deltagerNr].tilfoejForrigePoint(); //Opdaterer forrige point, så man kun kan vinde ved at have 40+ inden runden starter
			}
			
		}

		spillerNr = 1; //Starter fra spiller 1
		do {
			for (deltagerNr = 1; deltagerNr < antalSpillere + 1; deltagerNr++) //Sammenligner alle spillerne (også med sig selv)
			{
				if (spillerListe[spillerNr].vundet() == spillerListe[deltagerNr].vundet() && spillerListe[spillerNr].visPoint() == spillerListe[deltagerNr].visPoint() && spillerListe[spillerNr] != spillerListe[deltagerNr]) //Hvis to spillere har vundet i sidste runde og har lige mange point
					Res = "Der er ingen vindere i spillet, da minimum 2 spillere har samme antal point og slog to ens i sidste runde.";
				else if (spillerListe[spillerNr].vundet() == spillerListe[deltagerNr].vundet() && spillerListe[spillerNr].visPoint() > spillerListe[deltagerNr].visPoint()) //Ellers hvis to spillere har vundet i sidste runde, så vinder den spiller, som har flest point
					Res = spillerListe[spillerNr] + " har vundet spillet! Da " + spillerListe[spillerNr] + " har over 40 point og slog to ens i sidste rundte eller slog to ens 6'ere to gange i træk.";
				else if (spillerListe[spillerNr].vundet() == true) //Eller hvis der kun er en vinder
					Res = spillerListe[spillerNr] + " har vundet spillet! Da " + spillerListe[spillerNr] + " har over 40 point og slog to ens i sidste rundte eller slog to ens 6'ere to gange i træk.";
			}
			spillerNr++;
		} while(spillerNr < antalSpillere + 1); //Gentagelse ved alle spillerne

		GUI.showMessage(Res); //Beskrivelse af, hvem og hvorfor nogen har vundet
		System.exit(0); //Spillet lukker
	}
}